﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SysSU.UbiBroker.Interfaces
{
    public interface IDomain
    {
        String Name { get; }
	
	    void Put(Tuple tuple);

	    IList<Tuple> Read(Pattern pattern, string restriction);

	    IList<Tuple> ReadSync(Pattern pattern, string restriction);

	    Tuple ReadOne(Pattern pattern, string restriction);

	    Tuple ReadOneSync(Pattern pattern, string restriction);

	    IList<Tuple>Take(Pattern pattern, string restriction);

	    IList<Tuple> TakeSync(Pattern pattern, string restriction);

	    Tuple TakeOne(Pattern pattern, string restriction);

	    Tuple TakeOneSync(Pattern pattern, string restriction);

	    Object Subscribe(IReaction reaction, string eventType);
    	
	    void Unsubscribe(Object reactionId);
    }
}
